import type Typings from "@/typings";

/**
 * 过滤请求参数为 "" | undefined | null 的情况
 */
export const filterData: (
  data: Typings.Common.plainObj
) => Typings.Common.plainObj = (data) => {
  const filterValues = ["", undefined, null];

  const newObj: Typings.Common.plainObj = {};

  for (const i in data) {
    if (!filterValues.includes(data[i])) {
      Reflect.set(newObj, i, data[i]);
    }
  }

  return newObj;
};

/**
 * 去掉后字符串后缀的'/', 添加前缀的‘/’（如果没有）。
 * eg ‘xxx/zzz/’ => '/xxx/zzz'
 * eg '/xxx/zzz/' => '/xxx/zzz'
 * @param url
 * @returns {string}
 */
export const standardizedUrl = (url: string = ""): string => {
  if (!url || url === "/") {
    return "";
  }
  let temp: string = url.replace(/\/$/, "");

  // 非"http://" 或者 "http://" 或者 '//' 开头 ，在url前面添加 '/'
  if (!/^(http:|https:)?\/\//.test(temp)) {
    temp = temp.replace(/^\//, "");
    temp = "/" + temp;
  }
  return temp;
};
